Skip to content

Conversation

@takb
Copy link
Contributor

@takb takb commented Nov 27, 2025

Pull Request Checklist

  • 1. I have [rebased][rebase] the latest version of the main branch into my feature branch and all conflicts
    have been resolved.
  • 2. I have added information about the change/addition to functionality to the CHANGELOG.md file under the
    [Unreleased] heading.
  • 3. I have documented my code using JDocs tags.
  • 4. I have removed unnecessary commented out code, imports and System.out.println statements.
  • 5. I have written JUnit tests for any new methods/classes and ensured that they pass.
  • 6. I have created API tests for any new functionality exposed to the API.
  • 7. If changes/additions are made to the ors-config.json file, I have added these to the [ors config documentation][config]
    along with a short description of what it is for, and documented this in the Pull Request (below).
  • 8. I have built graphs with my code of the Heidelberg.osm.gz file and run the api-tests with all test passing
  • 9. I have referenced the Issue Number in the Pull Request (if the changes were from an issue).
  • 10. For new features or changes involving building of graphs, I have tested on a larger dataset
    (at least Germany), and the graphs build without problems (i.e. no out-of-memory errors).
  • 11. For new features or changes involving the graphbuilding process (i.e. changing encoders, updating the
    importer etc.), I have generated longer distance routes for the affected profiles with different options
    (avoid features, max weight etc.) and compared these with the routes of the same parameters and start/end
    points generated from the current live ORS.
    If there are differences then the reasoning for these MUST be documented in the pull request.
  • 12. I have written in the Pull Request information about the changes made including their intended usage
    and why the change was needed.
  • 13. For changes touching the API documentation, I have tested that the API playground [renders correctly][api].

Information about the changes

Key functionality added:

  • When ORS runs in preparation_mode, the produced graph files are packed in a .ghz file and saved in the graph_path along with the corresponding build info .yml file.
  • The graph info file now also contains the size of all graph files in graph_size_bytes
  • Some refactoring was necessary to make the test pass when run together with all other tests (in ors-api)

@takb takb enabled auto-merge November 28, 2025 00:13
@takb takb requested review from MichaelsJP and aoles November 28, 2025 00:13
@aoles aoles requested a review from Copilot November 28, 2025 00:15
Copilot finished reviewing on behalf of aoles November 28, 2025 00:19
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds functionality to automatically pack graph files into archives when running in preparation mode, making it easier to upload and distribute pre-built graphs.

Key changes:

  • When ORS runs in preparation_mode, generated graph files are automatically packed into .ghz archives and saved alongside corresponding .yml metadata files
  • The graph metadata now includes the total size of graph files in graph_size_bytes
  • Refactored the singleton pattern in RoutingProfileManager to allow re-initialization during tests

Reviewed changes

Copilot reviewed 14 out of 14 changed files in this pull request and generated 14 comments.

Show a summary per file
File Description
ors-engine/src/main/java/org/heigit/ors/routing/RoutingProfile.java Adds prepareGeneratedGraphForUpload() method to create zip archives of graph files, copy metadata, and cleanup; resets profileIdentifier in close() method
ors-engine/src/main/java/org/heigit/ors/routing/graphhopper/extensions/manage/local/ORSGraphFileManager.java Adds calculateFolderSizeInBytes() to compute total graph directory size and includes it in build info
ors-engine/src/main/java/org/heigit/ors/routing/graphhopper/extensions/manage/PersistedGraphBuildInfo.java Adds graphSizeBytes field to store the total size of graph files
ors-engine/src/main/java/org/heigit/ors/routing/RoutingProfileManager.java Modifies constructor to allow re-initialization by destroying existing instance before creating new one
ors-engine/src/main/java/org/heigit/ors/config/profile/BuildProperties.java Adds profileGroup and graphExtent fields to support graph naming in preparation mode
ors-api/src/main/java/org/heigit/ors/api/servlet/listeners/ORSInitContextListener.java Moves preparation mode exit logic and adds Environment dependency to detect test vs production mode; improves cleanup error handling
ors-api/src/main/java/org/heigit/ors/api/Application.java Updates bean creation to inject Environment into ORSInitContextListener
ors-api/src/test/java/org/heigit/ors/api/servlet/listeners/ORSInitContextListenerTest.java Updates test to inject Environment dependency
ors-api/src/test/resources/application-preparation-mode-test.yml Adds test configuration for preparation mode testing
ors-api/src/test/java/org/heigit/ors/apitests/PreparationModeTest.java Adds integration test to verify graph packing functionality in preparation mode
docs/technical-details/graph-repo-client/index.md Fixes typo: changes "coverage" to "graph extent" in comments
docs/run-instance/configuration/engine/profiles/repo.md Fixes spelling error in table description and updates formatting
docs/run-instance/configuration/engine/profiles/build.md Adds documentation for graph_extent and profile_group configuration options
CHANGELOG.md Documents the new preparation mode packing feature

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Member

@aoles aoles left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome, thanks a lot! 💪

Please refactor the contextInitialized method to reduce its Cognitive Complexity as reported by SonarQube.

Also, you might want to consider the unresolved comments from copilot's review 🤖

Cheers!

@takb takb disabled auto-merge November 28, 2025 17:45
@takb takb requested a review from aoles November 29, 2025 09:03
@sonarqubecloud
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants